package plp.prolog.declaration;

import java.util.ArrayList;

import plp.prolog.memory.AmbienteExecucaoProlog;

public class ExpressaoAnd extends ExpressaoComposta {

	public ExpressaoAnd(ArrayList<Expressao> listaExpressao) {
		super(listaExpressao);
	}

	@Override
	public boolean avaliar(AmbienteExecucaoProlog ambienteExecucao, Relacao relacao) {
		boolean resultado = true;
		
		for (Expressao e : listaExpressao){
			boolean resultadoPrevio = algumaRelacaoCasaComExpressao(ambienteExecucao, e);
			resultado = ( resultado && resultadoPrevio);
		}
		
		return resultado;
	}

	@Override
	public boolean unificar(AmbienteExecucaoProlog ambienteExecucao,
			Relacao relacao) {
		
		boolean resultado = true;
		
		for (Expressao e : listaExpressao){
			boolean resultadoPrevio = e.unificar(ambienteExecucao, relacao);
			resultado = ( resultado && resultadoPrevio);
		}
		
		return resultado;
	}


}
